📊

Tutorial Diagrama de Flujo (Factorial) [en python]

TemaDiagramas de FlujoPython
TipoTutoriales
MaterialTAMAN_C2.drawioTAMAN_C2.pdf

Nota: En el tutorial de 🐍Conceptos básicos de Python se pueden repasar los temas de programacion de la primera clase.

Cálculo de un factorial

Para la tarea 1 es necesario calcular un factorial, para ello se puede partir de la siguiente expresión

n!=(n)(n1)(n2)(n3)...(1)n!=(n)(n-1)(n-2)(n-3)...(1)

Esta expresión puede generalizarse como;

n!=i=1nin!=\prod_{i=1}^{n}i

Además, para la función factorial debemos evaluar dos casos específicos:

{n!=1                  n=0n!=“ERROR”  n<0\begin{cases} n!=1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ n = 0\\ n!=\text{``ERROR''}\ \ n<0 \end{cases}

Por lo tanto, en Python crearemos una función para el factorial, que tome como parámetro el n

Las funciones permiten agrupar bloques de código y procesos complejos. Permiten tener parámetros y salidas. Generalmente son usadas para realizar acciones que se repitan en diferentes contextos.

Las funciones se declaran usando la palabra def , con la siguiente sintaxis:

def nombre_funcion(parametro_1,parametro_2,....,parametro_n):
	bloque que se ejecuta
	al llamar a la función
	return resultado de llamar a la función

Por lo tanto:

def factorial(n):
	

Ahora, debemos evaluar cada uno de los casos del factorial, para ello, usamos un condicional if

def factorial(n):
	if n==0:
		
	elif n<:
	
	else:

Para decirle a Python que la función debe retornar un valor, basta con usar la palabra return

def factorial(n):
	if n==0:
		return 1
	elif n<:
	
	else:

Para el caso donde n < 0:

def factorial(n):
	if n==0:
		return 1
	elif n<:
		return "ERROR"
	else:

Por último, debemos hacer que la función calcule el factorial con la fórmula de la multiplicatoria, para ello, usaremos un ciclo for

Los ciclos for son acciones que se realizan repetidamente. En este caso queremos acumular la multiplicación de los números del 1 a n, por lo tanto:

resultado = 1 #Inicializamos el resultado en 1 porque la multiplicación por 1 no afecta el resultado
for i in range(1,n+1): #Esta linea declara el ciclo for. La variable i tomará los valores desde 1 hasta n

return resultado #retornamos el valor
resultado = 1 #Inicializamos el resultado en 1 porque la multiplicación por 1 no afecta el resultado
for i in range(1,n+1): #Esta linea declara el ciclo for. La variable i tomará los valores desde 1 hasta n
	resultado = resultado*i

return resultado #retornamos el valor

Por ejemplo, cuando i es igual a 1, resultado es igual a 1

Cuando i es igual a 2, resultado igual a 1 * 2 = 2

Cuando i es igual a 3, resultado es igual a 1 * 2 * 3 = 6

Cuando i es igual a 4, resultado es igual a 1 * 2 * 3 * 4 = 24

El código completo se ve así:

def factorial(n):
	if n==0:
		return 1
	elif n<:
		return "ERROR"
	else:
		resultado = 1
		for i in range(1,n+1):
			resultado = resultado*i
		return resultado

Diagrama de flujo del factorial

Los diagramas de flujo son una herramientra gráfica que facilita la conceptualización lógica de procesos. El flujo se representa con flechas. Por ejemplo:

def factorial():
	

En el anterior diagrama el código va de inicio a fin sin realizar ninguna acción. El símbolo ovalado representa el incicio y fin del programa. Un diagrama de flujo solo tiene un inicio y puede tener múltiples finales.

Ahora empezemos traduciendo el código de la función factorial, lo primero que tenemos que hacer es manejar la entrada del parámetro n, para ello, usamos un paralelogramo así:

def factorial(n):
	

Ahora harémos las condiciones del factorial, para ello usamos el siguiente símbolo:

Incorporando la primera condición, el diagrama se ve así:

def factorial(n):
	if n==0:
		return 1

El símbolo del rombo verifica que el número ingresado sea 0 y de ser así el programa retorna el valor de 1. Para retornar un valor se usa el mismo símbolo que se usa para los parámetros, un paralelogramo. Ahora el diagrama tiene dos finales, ambos se representan con el mismo símbolo.

Las formas del diagrama de flujo son parecidos a ladrillos legos, pueden ubicarse en diferentes sitios y conectarse. Para incluir las otras condiciones del factoria blasta con agregar otro rombo así:

def factorial(n):
	if n==0:
		return 1
	elif n<:
		return "ERROR"
		

En el diagrama anterior las dos condiciones eran muy cercanas y llevaban a la finalización del programa, el símbolo circular sirve para unir flujos (flechas) y se usó en este caso para mostrar que las dos opciones de n = 0 y n < 0 llegan a la terminación del programa.

Por último, debemos agregar el ciclo for para ello, usamos un hexágono que determine donde se comienza a iterar asi:

def factorial(n):
	if n==0:
		return 1
	elif n<:
		return "ERROR"
	else:
		resultado = 1
		for i in range(1,n+1):
			resultado = resultado*i
		return resultado
Hacer click en la imagen para zoom

El símbolo rectangular se usa para representar un proceso, por ejemplo, declarar una variable, realizar una suma, etc. En este caso se usó tanto para declara una variable como para acumular el valor de la multiplicatoria.

Note que las flechas del ciclo for tienen sentido lógico, es decir, mientras i se encuentre en el rango establecido se realizará la accion del rectangulo, pero cuando i deje de estar en el rango se ejcutará el código del paralelogramo, retornado el valor final.

Por último, usaremos la función que acabamos de crar en un script de Python, por ejemplo, si quisieramos encontrar el factorial de 5. Al momento de usar funciones que creamos anteriormente debemos usar el símbolo de rectangulo con dos líneas.

n = 5
f = factorial(n)
print(f)

Por último, ¿que sucede si el diagrama de flujo ocupa mas de una página? Se debe colocar un símbolo de un pentagono indicando el fin y comienzo de la página asi:

Adjunto estará el archivo de draw.io usado para este tutorial asi como el resultado final de los diagramas exportado a pdf.

Resumen de figuras del diagrama de flujo

Símbolo

Significado

Entradas y salidas


Determina el inicio o fin de un programa o función

1 entrada o 1 salida

Se usa para realizar cualquier proceso simple, ejemplo, sumar dos números

1 entrada y 1 salida

Se usa para tomar una descición en el flujo. Representa los if's

1 entrada y 2 salidas, se debe indicar cual de las dos es la verdadera

Se usa para recibir o retornar parámetros

1 entrada y 1 salida

Se usa para realizar operaciones iterativas, representa a los ciclos for

2 entradas y 2 salidas

Se usa para marcar saltos de página

1 entrada o 1 salida

Se usa para unir distintos flujos en uno solo.

Varias entradas y 1 salida. No se recomienda asignarle mas de 3 entradas

Se usa para ejecutar procesos complejos, generalmente para llamar funciones creadas por el usuario

1 entrada y 1 salida

Se usa para comentar secciones del diagrama de flujo

Se pone a la derecha o izquierda de las zonas a comentar. El texto se pone entre las lineas horizontales y se recomienda alinear el texto a la izquierda